package org.theSeed.redisIntegration.utils;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil;
import org.redisson.api.RList;
import org.redisson.api.RedissonClient;
import org.redisson.api.RedissonReactiveClient;

/**
 * redis工具
 */
public class RedisUtil {
    /**
     * 1. 基础分布式对象
     * RAtomicLong - 分布式原子长整型
     *
     * 用于分布式环境下的原子计数器
     *
     * RAtomicDouble - 分布式原子双精度浮点型
     *
     * 支持原子操作的浮点数
     *
     * RBucket - 分布式通用对象桶
     *
     * 可以存储任何类型的单个对象
     *
     * RBinaryStream - 分布式二进制流
     *
     * 用于处理大型二进制数据
     *
     * 2. 分布式集合
     * RList - 分布式List
     *
     * 实现java.util.List接口
     *
     * RSet - 分布式Set
     *
     * 实现java.util.Set接口
     *
     * RScoredSortedSet - 分布式排序Set
     *
     * 带分数的排序集合
     *
     * RMap - 分布式Map
     *
     * 实现java.util.Map接口
     *
     * RMapCache - 带缓存的分布式Map
     *
     * 支持元素过期
     *
     * 3. 分布式锁和同步器
     * RLock - 可重入锁
     *
     * 分布式实现java.util.concurrent.locks.Lock
     *
     * RFairLock - 公平锁
     *
     * 按照请求顺序获取锁
     *
     * RReadWriteLock - 读写锁
     *
     * 分布式读写锁
     *
     * RSemaphore - 信号量
     *
     * 分布式信号量
     *
     * RCountDownLatch - 闭锁
     *
     * 分布式CountDownLatch
     *
     * 4. 消息队列相关
     * RTopic - 发布订阅主题
     *
     * 支持消息的发布和订阅
     *
     * RQueue - 分布式队列
     *
     * 实现java.util.Queue接口
     *
     * RDelayedQueue - 延迟队列
     *
     * 支持延迟消息处理
     *
     * RBlockingQueue - 阻塞队列
     *
     * 实现java.util.concurrent.BlockingQueue
     *
     * 5. 高级功能对象
     * RHyperLogLog - 基数估算
     *
     * 用于大数据基数统计
     *
     * RBloomFilter - 布隆过滤器
     *
     * 高效大数据存在性判断
     *
     * RBitSet - 分布式位集合
     *
     * 分布式位图数据结构
     *
     * RGeo - 地理空间索引
     *
     * 支持地理位置查询
     *
     * RRateLimiter - 限流器
     *
     * 分布式限流控制
     *
     * 6. 时间序列对象
     * RTimeSeries - 时间序列
     *
     * 用于存储时间序列数据
     *
     * RReliableTopic - 可靠主题
     *
     * 支持消息持久化和重试
     * @return
     */

    /**
     * 获取redis操作工具
     * @return
     */
    public static RedissonClient getRedissonClient(){
        return SpringUtil.getBean(RedissonClient.class);
    }


    /**
     * 获取redis操作工具
     * @return
     */
    public static RedissonReactiveClient getRedissonReactiveClient(){
        return SpringUtil.getBean(RedissonReactiveClient.class);
    }
}
